package cn.edu.sdjzu.knoverse.model.entity.kg;

import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.data.neo4j.core.schema.Id;
import org.springframework.data.neo4j.core.schema.Node;
import org.springframework.data.neo4j.core.schema.Property;

@Data
@EqualsAndHashCode
// User不继承BaseNode，只用来作为关系数据库的用户信息进行权限管理
@Node(primaryLabel = "User")
/**
 * 代理节点，指向关系数据库中的用户表的一条记录
 * 创建和删除用户记录时，应该同时操作关系数据库和图数据库
 * 主要用于权限控制
 */
public class UserNode {
    /**
     * 用户id，这里不使用BaseNode中的id是因为用户的id存储在关系数据库，如果直接拿来用，可能会和已有的节点id冲突
     */
    @Id
    @Property("userId")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long userId;

    /**
     * 用户名称
     */
    @Property("name")
    private String name;
}
